Introduccion

Los datos obtenidos de Kaggle tienen la informacion atmosferica de varios años en australia, datos en los que viene incluida desde la velocidad del viento hasta la temperatura, en total 23 variables recogidas durante varios años en distintas ciudades de australia con las que se obtienen un data set de 140.000 lineas aproximadamente.

Nuestro objetivo será predecir la lluvia del dia siguiente con los datos metereologicos del dia.

Análisis DataSet

Con este dataset tan grande lo primero que nos planteamos fue centrarnos en dos cosas

  1. Utilizar una zona concreta de australia, sacada de la variable localizacion, de la cual elegimos 4 ciudades situadas en la costa sureste de Australia y

  2. Utilizar la variable temporal de alguna forma, ya que considerabamos que tenia importancia pero no podiamos usar cada dia del año como un dato diferente, por lo que decidimos obtener apartir de la fecha la estacion del año en la que estaba cada linea,

##  Dimensiones dataset train:  9824 25
##  Dimensiones dataset test:  1228 25
##  Dimensiones dataset validación:  1228 25

Variables

Analizamos las variables individuales por separado con distintos graficos.

##       Date               Season            Location        
##  Min.   :2007-11-01   Length:9824        Length:9824       
##  1st Qu.:2010-05-14   Class :character   Class :character  
##  Median :2012-08-31   Mode  :character   Mode  :character  
##  Mean   :2012-10-06                                        
##  3rd Qu.:2015-01-23                                        
##  Max.   :2017-06-25                                        
##                                                            
##     MinTemp         MaxTemp         Rainfall        Evaporation    
##  Min.   :-8.00   Min.   : 4.10   Min.   :  0.000   Min.   : 0.000  
##  1st Qu.: 7.90   1st Qu.:17.10   1st Qu.:  0.000   1st Qu.: 2.400  
##  Median :11.60   Median :21.40   Median :  0.000   Median : 4.200  
##  Mean   :11.44   Mean   :22.01   Mean   :  2.165   Mean   : 5.018  
##  3rd Qu.:15.50   3rd Qu.:26.10   3rd Qu.:  0.600   3rd Qu.: 6.800  
##  Max.   :33.90   Max.   :45.80   Max.   :119.400   Max.   :43.400  
##  NA's   :9       NA's   :8       NA's   :181       NA's   :2493    
##     Sunshine     WindGustDir        WindGustSpeed     WindDir9am       
##  Min.   : 0.00   Length:9824        Min.   : 11.00   Length:9824       
##  1st Qu.: 4.10   Class :character   1st Qu.: 31.00   Class :character  
##  Median : 7.90   Mode  :character   Median : 39.00   Mode  :character  
##  Mean   : 7.15                      Mean   : 40.64                     
##  3rd Qu.:10.20                      3rd Qu.: 48.00                     
##  Max.   :13.90                      Max.   :106.00                     
##  NA's   :2667                       NA's   :1104                       
##   WindDir3pm         WindSpeed9am    WindSpeed3pm    Humidity9am    
##  Length:9824        Min.   : 0.00   Min.   : 0.00   Min.   :  5.00  
##  Class :character   1st Qu.: 7.00   1st Qu.:13.00   1st Qu.: 56.00  
##  Mode  :character   Median :11.00   Median :19.00   Median : 68.00  
##                     Mean   :13.27   Mean   :18.82   Mean   : 67.22  
##                     3rd Qu.:19.00   3rd Qu.:24.00   3rd Qu.: 80.00  
##                     Max.   :63.00   Max.   :65.00   Max.   :100.00  
##                     NA's   :207     NA's   :199     NA's   :71      
##   Humidity3pm     Pressure9am      Pressure3pm        Cloud9am    
##  Min.   : 4.00   Min.   : 982.3   Min.   : 985.5   Min.   :0.000  
##  1st Qu.:37.00   1st Qu.:1013.6   1st Qu.:1011.4   1st Qu.:2.000  
##  Median :48.00   Median :1018.6   Median :1016.3   Median :6.000  
##  Mean   :48.95   Mean   :1018.5   Mean   :1016.2   Mean   :4.694  
##  3rd Qu.:60.00   3rd Qu.:1023.5   3rd Qu.:1021.1   3rd Qu.:7.000  
##  Max.   :99.00   Max.   :1040.2   Max.   :1037.8   Max.   :9.000  
##  NA's   :30      NA's   :201      NA's   :196      NA's   :4111   
##     Cloud3pm        Temp9am         Temp3pm       RainToday        
##  Min.   :0.000   Min.   :-1.30   Min.   : 3.70   Length:9824       
##  1st Qu.:2.000   1st Qu.:11.70   1st Qu.:15.90   Class :character  
##  Median :5.000   Median :15.40   Median :20.00   Mode  :character  
##  Mean   :4.696   Mean   :15.55   Mean   :20.56                     
##  3rd Qu.:7.000   3rd Qu.:19.30   3rd Qu.:24.50                     
##  Max.   :8.000   Max.   :38.60   Max.   :44.70                     
##  NA's   :4298    NA's   :24      NA's   :17                        
##     RISK_MM        RainTomorrow      
##  Min.   :  0.000   Length:9824       
##  1st Qu.:  0.000   Class :character  
##  Median :  0.000   Mode  :character  
##  Mean   :  2.164                     
##  3rd Qu.:  0.800                     
##  Max.   :119.400                     
## 

Antes que nada, visualizamos información básica de las ciudades elegidas y estaciones. Cómo están relacionadas con RainToday y con la variable de salida RainTomorrow.

Realizamos un conteo del número de días que han llovido o no en cada una.

Si filtramos por los días en los que sí llueve (RainToday = 1), vemos las veces que ha llovido el día siguiente o no.

Vemos que en Adelaide, Canberra y Melbourne no suele ser fuecuente que llueva el día siguiente si ha llovido hoy. En Sydney en cambio, es más fequente que llueva si ha llovido el día anterior.

Representamos ahora los días que han llovido en función de las ciudades y las estaciones del año.

En Adelaide y Melbourne las estaciones sí influyen más en la fecuencia de días que llueven, mientras que en Sydney y Canberra suele ser más homogénero.

Analizamos las variables individuales por separado con distintos gráficos.

En este dataset hay muchos pares de variables que están fuertemente relacionadas, por ejemplo la temperatura máxima y mínima de un día, o la presión a las 9 de la mañana y la presión a las 3 de la tarde. Por ello, en el análisis individual de variables se estudiarán a la vez por una mejor comprensión.

MinTemp y MaxTemp

Temperatura mínima

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -8.00    7.90   11.60   11.44   15.50   33.90       9

Temperatura máxima

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    4.10   17.10   21.40   22.01   26.10   45.80       8
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

La temperatura mínima se podría asimilar a una distribución normal. La temperatura máxima tiene una cola a su derecha en la que aparecen mútliples valores atípicos.

Temp9am y Temp3pm

Las variables Temp9am y Temp3pm son muy parecidas a las temperaturas máximas y mínimas. Temperatura 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -1.30   11.70   15.40   15.55   19.30   38.60      24

Temperatura 3pm

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    3.70   15.90   20.00   20.56   24.50   44.70      17
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Estas variables tienen un comportamiento parecido a la temperatura mńima y máxima respectivamente.

Pressure9am y Pressure3pm

Presión a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   982.3  1013.6  1018.6  1018.5  1023.5  1040.2     201

Presión a las 3pm

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   985.5  1011.4  1016.3  1016.2  1021.1  1037.8     196
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Parecen tener una distribución normal ambas variables.

Humidity9am y Humidity3pm

Humedad a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   982.3  1013.6  1018.6  1018.5  1023.5  1040.2     201

Humedad a las 3pm

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   982.3  1013.6  1018.6  1018.5  1023.5  1040.2     201
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Cloud9am y Cloud3pm

Nubes a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.000   6.000   4.694   7.000   9.000    4111

Nubes a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.000   5.000   4.696   7.000   8.000    4298
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

WindSpeed9am y WindSpeed3pm

Velocidad del viento a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    7.00   11.00   13.27   19.00   63.00     207

Velocidad del viento a las 9am

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   13.00   19.00   18.82   24.00   65.00     199
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

WindDir9am y WindDir3pm

WindGustDir: The direction of the strongest wind gust in the 24 hours to midnight. WindGustSpeed: The speed (km/h) of the strongest wind gust in the 24 hours to midnight.

Velocidad más fuerte del viento

## [1] ""
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   11.00   31.00   39.00   40.64   48.00  106.00    1104
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Analizamos cuatro variables que no están, a priori, relacionadas por pares.

Risk_mm, Rainfall, Evaporation, Sunshine

RISK_MM

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   0.000   0.000   2.164   0.800 119.400
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Rainfall

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   0.000   0.000   2.165   0.600 119.400     181
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Velocidad de Evaporation

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.400   4.200   5.018   6.800  43.400    2493
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Horas de Sunshine

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    4.10    7.90    7.15   10.20   13.90    2667
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Análisis multivariables

Analizamos la relación unas variables con otras.

Gracias a este gráfico demostramos que los pares de variables citados sí están fuertemente relacionados. Por ejemplo, la presión a las 9 de la mañana con la presión a las 3 de la tarde: si una aumenta, la otra también. Destacar que también hay correlaciones inversas: cuando aumenta la variable Sunshine, disminuye la Cloud9am.

Analizamos en general la relación entre las variables con las estaciones, la variable de salida (RainTomorrow) y las ciudades. Para ello seleccionamos una de las variables de los pares y el resto. Las variables Rainfall y Risk_mm no las mostramos pues su distribución es difícil de visualizar. Se analizarán posteriormente con las transformaciones.

Relaciones por estaciones.

La Temperatura (MaxTemp, Temp9am), la presión (Pressure3pm) y evaporación muestran un claro comportamiento diferente según la estación.

Relaciones por ciudades.

La temperatura es la variable dónde se puede observar más claramente que tiene un comportamiento diferente para cada ciudad.

Relaciones por RainTomorrow, si llueve o no.

Las variables interesantes a analizar con más detalle son: la temperatura, la humedad, la presión y los rayos de sol.

A partir de estas relaciones, indagamos con más detalle las relaciones que parecen interesantes.

Las cuatro variables de temperatura son muy parecidas, como puede observarse en sus distribuciones:

Al estar relacionadas y tener un comportamiento similar posteriormente se estudiará introdudir al modelo interacciones entre éstas.

Veamos cómo se comporta una de ellas según las estaciones y ciudades:

Comprobamos que los pares de temperaturas están fuertemente relacionados.

## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

Analizamos otras variables más en detalle.

Veamos cómo se comporta la presión según las estaciones y ciudades:

Comprobamos cómo de relacionadas están las variables de presión entre ellas.

Veamos cómo se comporta la humedad según las estaciones y ciudades:

Comprobamos cómo de relacionadas están las variables de humedad entre ellas.

Veamos cómo se comporta la evaporación según las estaciones y ciudades:

Veamos cómo se comportan las horas de sol según las estaciones y ciudades:

Veamos cómo se comporta la velocidad del viento según las estaciones y ciudades:

Veamos cómo se comportan las nubes del viento según las estaciones y ciudades:

Veamos cómo se comportan la velocidad del viento y su dirección según las estaciones y ciudades:

Añadir estos gráficos (Rainfall y RISK_MM) después de analizar las transformaciones.

Lo mismo para RISK_MM

EDA

Interaccion entre variables y combinacion

Ahora crearemos unas nuevas varibles combinandolas entre si. Primero MinTemp y MaxTemp

Segundo Temp9am y Temp3pm

Por ultimo Pressure9am y Pressure3pm

Imputacion de datos faltantes

Modelo